//----------------------------------------------------------------
#ifndef WORLD_H
#define WORLD_H
//----------------------------------------------------------------
#include "Common.h"
#include "ResourceNode.h"
#include "Map.h"
#include "A.h"
//----------------------------------------------------------------
#define MAX_AMOUNT_PER_NODE 100 //maximo por nodo
#define MAX_MINE_PER_TIME 8 //maximo por cada ves que mina
//----------------------------------------------------------------
typedef map<pair<int, int>, ResourceNode*>::iterator ResourceNodeMapIterator;
//----------------------------------------------------------------
class World
{
public:
	World(Renderer* pkRenderer);
	~World();

	bool addResourceNode(ResourceList kNodeType, int iPosX, int iPosY);
	bool removeResourceNode(ResourceList kNodeType, int iPosX, int iPosY);
	bool addPlayerBase(int iPosX, int iPosY);
	bool loadWorldMap(const std::string& rkTileFile, const std::string& rkMapFile);
	Map* getWorldMap() {return m_pkWorldMap;}
	void draw();
	bool getNearestResourceNode(ResourceList kNodeType, vector<int>& rkPath, int iMinerPosX, int iMinerPosY, int& riNodePosX, int& riNodePosY);
	void getWorldPos(float& rfPosX, float& rfPosY);
	void getWorldData(int& riCols, int& riRows, int& riTileHeight, int& riTileWidth);
	void mineNode(ResourceList kNodeType, int iNodePosX, int iNodePosY, int& riAmountMined); //AmountMined entra el maximo que puede llevar el minero, se setea con el minimo entre lo que entra, lo disponible en el nodo y lo maximo que se puede minar por vez
	A* getPathfinder() { return m_pkPathfinder; }

protected:
	Map* m_pkWorldMap;
	Renderer* m_pkRenderer;

	map<pair<int, int>, ResourceNode*> m_kGoldNodes;
	map<pair<int, int>, ResourceNode*> m_kStoneNodes;
	map<pair<int, int>, ResourceNode*> m_kWoodNodes;
	map<pair<int, int>, ResourceNode*> m_kFoodNodes;

	A* m_pkPathfinder;
};
//----------------------------------------------------------------
#endif //WORLD_H
//----------------------------------------------------------------
